#pragma once

#define BASECOMCLASS_CLASS            "BassComClass.Class" 
#define BASECOMCLASS_FACTORY_CLASS	  "BaseComClass.Factory.Class"  
#define BASECOMCLASS_FACTORY_OBJ      "BaseComClass.Factory"


class CBaseComClass
{
public:
	static int AttachEventListener(lua_State* luaState);
	static int DeleteSelf(lua_State* luaState);
	static int ListenerCallBack(DWORD dwParam1,DWORD dwParam2,int nIndex);
	static int RegisterClass(XL_LRT_ENV_HANDLE hEnv);

};

//-------------------------//

class CBaseComClassFactory
{
public:
	static CBaseComClassFactory* Instance();
	static int CreateInstance(lua_State* luaState);
	static void RegisterObj(XL_LRT_ENV_HANDLE hEnv);
private:
	static CBaseComClassFactory* m_pObj;
};